/*
 * Copyright (c) 2020 Particle Industries, Inc.  All rights reserved.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation, either
 * version 3 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, see <http://www.gnu.org/licenses/>.
 */

#include "random.h"

namespace particle {

namespace test {

std::string randString(size_t size) {
    static const std::string alpha = "abcdefghijklmnopqrstuvwxyz";
    std::uniform_int_distribution<unsigned> dist(0, alpha.size() - 1);
    std::string s;
    s.reserve(size);
    for (size_t i = 0; i < size; ++i) {
        s += alpha.at(dist(randGen()));
    }
    return s;
}

std::default_random_engine& randGen() {
    static thread_local std::default_random_engine gen((std::random_device())());
    return gen;
}

} // namespace test

} // namespace particle
